昨日簡短的介紹了Template Engine - Themleaf,接著我們討論當web後端產生Exception時Spring Boot提供了什麼樣的錯誤處理機制
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello(){
//拋出異常
int i = 1/0;
return "index";
}
}
配置內容都在ErrorMvcConfiguration中
錯誤的處理機制可以分為兩個部份,上面的HandlerExceptionResolver是由Spring MVC提供的,當無法處理的時候會導到下方的BasicErrorController處理,這個部份Spring Boot又可在分為請求JSON或是請求頁面,
在未設任何ExceptionHandler的情況下訪問不存在頁面,會導到Whitelabel Error Page
訪問後端1/0的頁面
模擬API訪問
設定handleException,發生異常時會被此Handler捕獲
@ExceptionHandler
public String handleHellException(Exception e){
return "發生錯誤了GG:"+e.getMessage();
}
加入統一錯誤處理的Controller,標註@ControllerAdvice
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler
@ResponseBody
public String handleException(Exception e){
return "GlobalExceptionHandler:"+e.getMessage();
}
}
將GlobalExceptionHandler註解,測試BasicErrorController
加入5xx.html
加入500.html